Digital video content can now be streamed to multiple clients in real-time over traditional cable television and telephone networks, both of which are being leveraged by service providers to provide more attractive and varied services to customers. In order for a streaming video service to be commercially successful, it must be able to recover from resource failures that will inevitably occur.
Streaming client software in devices such as set top boxes and PCs, and backoffice stream session control software such as ISA, nAble, and NGOD, typically maintain a static picture of the topology of the elements in a streaming network. Further, elements of the streaming network which implement content vault storage and streaming pump operations are statically configured and administered. Fault tolerance is typically not built into the backoffice and client software subsystems.
In conventional streaming networks, stream servers are continuously generating state information, especially as streams are setup, maintained, and torn down. If a stream server crashes, the state information generated at the stream server can be lost and restarting the stream on a new stream server will result in a perceptible service disruption to a viewer. One technique for providing fault tolerance in a streaming network involves installing a dedicated backup stream server for each active stream server. The active stream server services active streams and sends state information to the backup stream server. The backup stream server does not support any streams, and sits idle in the background receiving state information from the active stream server and waiting for an indication that the active stream server has failed. While installing a dedicated backup stream server for each active stream server works well to provide reliable stream control failover in a streaming network, having a backup stream server sit idle until the active stream server fails is a resource intensive solution.